#ifndef _TMsgDirDirectoryBase_H
#define _TMsgDirDirectoryBase_H

// TMsgDirDirectoryBase.h

// Base class for directory server sub directory messages.  This class is
// not a directory server message itself.  It is just further refinement
// of TMessage for use in directory messages.


#include <string>
#include "TMsgDirPeerDataBase.h"

namespace WONMsg {

class TMsgDirDirectoryBase : public TMsgDirPeerDataBase
{
public:
	// Default ctor
	TMsgDirDirectoryBase(void);

	// TMessage ctor
	explicit TMsgDirDirectoryBase(const TMessage& theMsgR);

	// Copy ctor
	TMsgDirDirectoryBase(const TMsgDirDirectoryBase& theMsgR);

	// Destructor
	virtual ~TMsgDirDirectoryBase(void);

	// Assignment
	TMsgDirDirectoryBase& operator=(const TMsgDirDirectoryBase& theMsgR);

	// Virtual Duplicate from TMessage
	virtual TRawMsg* Duplicate(void) const;

	// Pack and Unpack the message
	// Unpack will throw a BadMsgException is message is not of this type
	virtual void* Pack(void); 
	virtual void  Unpack(void);

	// Member access
	const std::wstring& GetDirectoryPath(void) const;
	virtual void SetDirectoryPath(const std::wstring& thePath);

protected:
	std::wstring mDirectoryPath;
};


// Inlines
inline TRawMsg*
TMsgDirDirectoryBase::Duplicate(void) const
{ return new TMsgDirDirectoryBase(*this); }

inline const std::wstring&
TMsgDirDirectoryBase::GetDirectoryPath(void) const
{ return mDirectoryPath; }

inline void
TMsgDirDirectoryBase::SetDirectoryPath(const std::wstring& thePath)
{ mDirectoryPath = thePath; }

};  // Namespace WONMsg

#endif